import { useLocation, useParams, Navigate } from 'react-router-dom' import { trpc, inferMutationOutput } from '~/utils/trpc' import { useHasPermission } from '~/components/DashboardContext' import IVSpinner from '~/components/IVSpinner' import TransactionLayout from '~/components/TransactionUI/_presentation/TransactionLayout' import PageLayout from '~/components/PageLayout' /** * This is only for production transactions. */ export default function TransactionPage() { const location = useLocation() const state = location.state as | { transaction?: inferMutationOutput<'transaction.add'> } | undefined const { transactionId } = useParams<{ transactionId: string }>() const canRunActions = useHasPermission('RUN_PROD_ACTIONS') const canViewTransactions = useHasPermission('READ_PROD_TRANSACTIONS') const { data } = trpc.useQuery( ['transaction.dashboard.show', { transactionId: transactionId as string }], { initialData: state?.transaction, initialDataUpdatedAt: state?.transaction?.updatedAt.getTime(), } ) if (!data) { return } if ( (data.status === 'COMPLETED' && canViewTransactions === false) || (data.status !== 'COMPLETED' && canRunActions === false) ) { return } return ( ) }